/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Modelo.DAL;

import java.sql.SQLException;
import java.sql.Statement;
import Modelo.NotificacionRiesgo;
import java.sql.ResultSet;
import org.json.JSONObject;

//Generar Pdf
import java.util.Map;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.engine.JasperRunManager;
import org.json.JSONArray;

/**
 *
 * @author Francis
 */
public class NotificacionRiesgo_DAO {

    public static JSONArray consultarNR(String query) {
        ConexionBD conexion = new ConexionBD();
        Statement s = null;
        ResultSet rs = null;
        try {
            s = conexion.session.createStatement();
        } catch (SQLException se) {
            System.out.println("¡Error Consultando Notificacion de Riesgo!");
            return null;
        }
        System.out.println(query);
        try {
            rs = s.executeQuery(query);

            JSONArray nrs = new JSONArray();
            try {
                int i = 0;
                while (rs.next()) {

                    JSONObject nr = new JSONObject();
                    nr.put("id_notificacion_riesgo", rs.getString(1));
                    nr.put("nombre_puesto", rs.getString(2));
                    nr.put("ci", rs.getString(3));
                    nr.put("realizado_por", rs.getString(4));
                    nr.put("fecha_notificacion", rs.getString(5));
                    nr.put("status", rs.getString(6));
                    nr.put("path", rs.getString(7));
                    nr.put("tam", rs.getString(8));
                    nrs.put(i++, nr);
                }
            } catch (Exception e) {
                System.out.println("Error obteniendo data de la notificacion de riesgo.");
            }
            return nrs;
        } catch (SQLException se) {
            se.printStackTrace();
            System.out.println("Error Consultado la notificacion de riesgo");
            return null;
        }
    }

    public static int insertarNR(NotificacionRiesgo nr) {
        ConexionBD conexion = new ConexionBD();
        Statement s = null;

        try {
            s = conexion.session.createStatement();
        } catch (SQLException se) {
            System.out.println("Error Creando Notificación de Riesgo!" + se.getMessage());
            return -1;
        }
        String query = "BEGIN TRANSACTION; INSERT INTO notificacion_riesgo (nombre_puesto, ci, "
                + "realizado_por, fecha_notificacion, status) VALUES "
                + "('" + nr.getCargo() + "', '" + nr.getNacionalidad() + "-" + nr.getCedula() + "', "
                + "'" + nr.getRealizadoPor() + "', '" + nr.getFechaNR() + "', "
                + "'" + nr.getEstado() + "');";
        System.out.println(query);
        try {
            s.executeUpdate(query);
            query = "SELECT MAX(id_notificacion_riesgo) from notificacion_riesgo";
            ResultSet rs = s.executeQuery(query);
            int idNR;
            if (rs.next()) {
                idNR = rs.getInt(1);
                s.executeUpdate("COMMIT;");
                return idNR;
            }
            return -1;
        } catch (SQLException se) {
            System.out.println("Error Insertando Notificación de Riesgo! " + se.getMessage());
            return -1;
        }
    }

    public byte[] generarInforme(Map parametros) {
        ConexionBD conexion = new ConexionBD();
        byte[] pdf = null;
        String filename = "/Modulo3/generarPdfNotificacion.jasper";
        JasperReport masterReport = null;

        try {
            masterReport = (JasperReport) JRLoader.loadObject(getClass().getResource(filename));
            pdf = JasperRunManager.runReportToPdf(masterReport, parametros, conexion.session);
        } catch (JRException e) {
            e.printStackTrace();
        }

        if (conexion.session != null) {
            conexion.cerrarConexion();
        }

        return pdf;
    }
}
